このチュートリアルでは、カスタムセキュリティプロバイダを構成し、レポートにUserContext属性を使用することによって、レポートにログインユーザー固有のデータを提供する方法を説明します。
カスタムセキュリティプロバイダを構成すると、外部のデータベースに保存されているユーザー情報を使用してActiveReports Serverにログインできるようになるほか、ユーザーごとにUserContext属性を設定することができます。UserContext属性を使用すると、ログインしているユーザーに応じて、表示するデータ、データベースの接続文字列、SQLのクエリなどを動的に制御することができます。この機能は、複数の顧客に対してサービスを提供する、マルチテナント型のSaasとしてActiveReports Serverを活用する場合に有用です。
 |
注意:
- このチュートリアルでは、カスタムセキュリティプロバイダに含まれる「ActiveTunes.SQLite」ファイルに、SQLite ODBC Driverを使用して接続します。SQLite ODBC Driverは、以下のリンクより入手可能です。
SQLite ODBC Driver(sqliteodbc.exeをダウンロード)
- このチュートリアルでは、ページレポートを使用していますが、RDLレポートを使用した場合も同様の手順でレポートの作成が可能です。
|
UserContext属性をパラメータとして静的クエリに設定する
ActiveTunesデータベースを使用してマルチテナント用レポートを作成する
- 利用者ポータルで、[新規レポート]
をクリックします。
- 表示される[レポートの作成]ダイアログで、「ページレポート」を選択し、[作成]ボタンをクリックします。
-
[レポートエクスプローラ]で、[データソース]ノードを右クリックし、[データソースの追加]オプションを選択するか、[追加](+)ボタンから[データソース]を選択します。

-
[レポートデータソース]ダイアログで、ActiveTunesデータベースへの接続を作成します。
- [データソース]ダイアログの[全般]ページで、[名前]に「DataSource1」(デフォルト)と入力し、[種類]に「Microsoft Odbc Provider」を選択します。
- [接続文字列]ボックスに次の接続文字列を入力します。
DRIVER=SQLite3 ODBC Driver; Database=C:\Data\ActiveTunes.sqlite
- UserContext属性を設定します。UserContext属性はレポートパラメータで設定され、ログインユーザー固有の情報を返します。ページレポートのパラメータの詳細については、ActiveReportsユーザーガイドの「パラメータの追加」を参照してください。
- [レポートエクスプローラ]で[パラメータ]ノードを右クリックし、[パラメータの追加]オプションを選択するか、[追加(+)]ボタンから「パラメータ」を選択します。[レポート - パラメータ]ダイアログが開きます。
- [全般]タブで、[名前]を「Customer」に、[データタイプ]を「Integer」に設定し、[Null値を許可する]、[非表示]のチェックボックスをオンにします。
- [既定値]タブで、[値を直接入力](デフォルト)を選択し、[追加(+)]ボタンをクリックして[値]フィールドに「= Code.UserContext.GetValue("CustomerID")」と入力します。
- [OK]ボタンをクリックしてダイアログを閉じます。
-
[レポートエクスプローラ]で、手順4で追加したデータソースの名前DataSource1を右クリックし、[データセットの追加]オプションを選択するか、[追加](+)ボタンから[データセット]を選択します。
- [データセット]ダイアログの[全般]ページで、[名前]に「Invoice」と入力します。
- [パラメータ]ページで、[追加](+)ボタンをクリックします。[名前]に「Invoice」と入力し、[値]のドロップダウンから<式...>を選択します。開かれる[式エディタ]で、[パラメータ]ノードを開いて「Customer」を選択し、[挿入]をクリックし、[OK]をクリックします。
-
[クエリ]ページで、[クエリ]フィールドに以下のSQLクエリを入力します。
SQLクエリ |
コードのコピー
|
Select * from Invoice where CustomerID=?;
|
- [OK]ボタンをクリックしてダイアログを閉じます。
- ツールボックスからTableデータ領域をドラッグしてデザイナ面上にドロップします。

- Table1(手順7で追加したTableデータ領域)を選択し、[プロパティ]ウィンドウでDataSetNameプロパティを「Invoice」に設定します。

- Table1の詳細行で、ポインタを各セル上でホバーさせると、セルの右上隅にフィールド選択用アイコンが表示されます。各セルでこれをクリックし、次のようにフィールドを設定します。

セル |
フィールド |
左側のセル |
InvoiceID |
真ん中のセル |
InvoiceDate |
右側のセル |
Total |
テーブルの書式を設定する(オプション)
ActiveReportsデザイナに追加したテーブルの書式を設定するにはいくつかの方法があります。書式設定の詳細については、ActiveReportsユーザーガイドの「Table」を参照してください。

- Table1を選択し、[プロパティ]ウィンドウで各プロパティを次のように設定します。
プロパティ名 |
プロパティの値 |
FixedSize |
6.5in, 7in |
Location |
0in, 0.5in |
RepeatHeaderOnNewPage |
True |
Size |
6.4in, 0.7in |
- Table1のいずれかのセルをクリックします。左側に表示される行ハンドルからタイトル行を選択し、各セルのValueプロパティの値を次のように設定します。
セル |
プロパティの値 |
左側のセル |
請求書番号 |
真ん中のセル |
発行日 |
右側のセル |
合計額 |
- Table1のいずれかのセルをクリックします。左側に表示される行ハンドルから詳細行を選択し、[プロパティ]ウィンドウでTextAlignプロパティを「Left」に、BorderStyleプロパティを「Solid」に設定します。

- 詳細行の真ん中のセル(InvoiceDate)を選択し、[プロパティ]ウィンドウでFormatプロパティを「d」(Decimalを選択)に設定します。
- 詳細行の右側のセル(Total)を選択し、[プロパティ]ウィンドウでLanguageプロパテイを「英語(米国)」に設定します。
- テーブルフッタの右のセルを選択し、[プロパティ]ウィンドウで各プロパティを次のように設定します。
プロパティ名 |
プロパティの値 |
Format |
c |
Language |
英語(米国) |
Value |
=Sum(Fields!Total.Value) |
レポートをActiveReports Serverにアップロードする
- デザイナの[保存]ボタン
をクリックします。
- 開かれる[名前を付けて保存]ダイアログで、フォルダ・ツリーからディレクトリを選択し、サーバー上のどの位置にレポートを保存するかを決定します。
-
[レポートの名前]フィールドに「請求書」と入力して[保存]ボタンをクリックします。

カスタムセキュリティプロバイダを設定する
このトピックでは、ActiveReports Serverとともにインストールされているカスタムセキュリティプロバイダのサンプルプロジェクトを使用します。このサンプルは、デフォルトで次の場所に配置されています。
C:\ActiveReports 11.0J Server\SDK\Samples\ActiveTunes.SecurityProvider
カスタムセキュリティプロバイダの設定方法の詳細については、「カスタムセキュリティプロバイダのデバッグ」を参照してください。
ActiveReports Server上のレポートにパーミッションを設定する
ActiveReports Server上では、レポートのパーミッションを変更して、複数のユーザーがレポートを読み取れるようにする必要があります。
レポートの読み取りのパーミッションを付与する方法については、「パーミッションの管理」を参照してください。

ActiveReports Server上のレポートをプレビューする
UserContext属性をパラメータとして動的クエリに設定する
ユーザーをAdministratorロールに追加する
ActiveTunes.SecurityProviderのユーザーは、UserContext属性を使用してレポートの[サーバー共有データソース]ダイアログに動的なクエリを入力するために、Administratorロールに追加される必要があります。
このトピックでは、ActiveReports Serverとともにインストールされているカスタムセキュリティプロバイダのサンプルプロジェクトを使用します。このサンプルは、デフォルトで次の場所に配置されています。
C:\ActiveReports 11.0J Server\SDK\Samples\ActiveTunes.SecurityProvider
- Visual Studioで、ActiveTunes.SecurityProviderプロジェクトを開きます。
- Constants.csファイルで、次の文字列
public readonly string Customers = "ActiveTunesCustomer";
public readonly string Customers = "ActiveTunesEmployee";
を
public readonly string Customers = "Administrator";
public readonly string Employees = "Administrator";
に変更します。
- [ビルド]メニューから、[ソリューションのビルド]を選択します。
- プロジェクトのbin\Debug\フォルダからActiveTunes.SecurityProvider.dllファイルとActiveTunes.SecurityProvider.pdbをコピーして、C:\ActiveReports 11.0J Server\SecurityProviders\に貼り付けます。
- ActiveReports Serverを再起動、再接続し、セキュリティプロバイダとデバッグ用ファイルをActiveReports 11.0J Serverで使用可能にします。
カスタムセキュリティプロバイダを設定する
このトピックでは、ActiveReports Serverとともにインストールされているカスタムセキュリティプロバイダのサンプルプロジェクトを使用します。このサンプルは、デフォルトで次の場所に配置されています。
C:\ActiveReports 11.0J Server\SDK\Samples\ActiveTunes.SecurityProvider
カスタムセキュリティプロバイダの設定方法の詳細については、「カスタムセキュリティプロバイダのデバッグ」を参照してください。
ActiveTunesデータベースを使用してマルチテナント用レポートを作成する
- 利用者ポータルに、ログイン「alero@uol.com.br」、パスワード「11」でログインします。
- 利用者ポータルで、[新規レポート]
をクリックします。
- 表示される[レポートの作成]ダイアログで、[ページレポート]を選択します。
- 新規作成されるページレポートの帳票デザイナで、[サーバー]メニューから[サーバー共有データソース]を選択します。
- 表示される[サーバー共有データソース一覧]ダイアログで、[追加](+)ボタンをクリックします。開かれる[接続設定]ページで、各項目に次のように入力し、[保存]をクリックします。
- [種類]: Microsoft Odbc Provider
- [名前]: ActiveTunes Database
- [接続文字列]: DRIVER=SQLite3 ODBC Driver; Database=C:\Data\ActiveTunes.sqlite
- [サーバー]メニューから[サーバー共有データセット]を選択します。
- 表示される[サーバー共有データセット一覧]ダイアログで、[追加](+)ボタンをクリックします。開かれる[サーバー共有データセット]ダイアログで、次のように設定します。
- [全般]タブで、[データソース]に「ActiveTunes Database」を選択し、[名前]に「Invoice」と入力します。
-
[クエリ]タブで、[クエリ]フィールドに以下のSQLクエリを入力します。
SQLクエリ |
コードのコピー
|
="select * from Invoice where CustomerID = " + Code.UserContext.GetValue("CustomerID")
|
- [検証]ボタンをクリックしてクエリを検証します。
- [保存]をクリックして共有データセットをサーバーに追加します。
- [レポートエクスプローラ]で[追加(+)]ボタンをクリックして[サーバー共有データセット]を選択するか、[サーバー共有データセット]ノードを右クリックして[データセットの追加]オプションを選択します。
- 表示される[サーバー共有データセットの追加]ダイアログで、Invoiceデータセットを選択し、[OK]をクリックします。
- ツールボックスからTableデータ領域をドラッグし、デザイナ面上にドロップします。

- Table1(手順10で追加したTableデータ領域)を選択し、[プロパティ]ウィンドウでDataSetNameプロパティを「Invoice」に設定します。

- Table1の詳細行で、各セルでポインタをホバーさせるとセルの右上隅にフィールド選択用アイコンが表示されます。各セルでこれをクリックして、次の表のようにフィールドを設定します。

セル |
フィールド |
左側のセル |
InvoiceID |
中央のセル |
InvoiceDate |
右側のセル |
Total |
テーブルの書式を設定する(オプション)
ActiveReportsデザイナに追加したテーブルの書式を設定するにはいくつかの方法があります。書式設定の詳細については、ActiveReportsユーザーガイドの「Table」を参照してください。

- Table1を選択し、[プロパティ]ウィンドウで各プロパティを次のように設定します。
プロパティ名 |
プロパティの値 |
FixedSize |
6.5in, 7in |
Location |
0in, 0.5in |
RepeatHeaderOnNewPage |
True |
Size |
6.4in, 0.7in |
- Table1のいずれかのセルをクリックします。左側に表示される行ハンドルからタイトル行を選択して、各セルのValueプロパティの値を次のように設定します。
セル |
プロパティの値 |
左側のセル |
請求書番号 |
中央のセル |
発行日 |
右側のセル |
合計額 |
- Table1のいずれかのセルをクリックします。左側に表示される行ハンドルから詳細行を選択して、[プロパティ]ウィンドウでTextAlignプロパティを「Left」に、BorderStyleプロパティを「Solid」に設定します。

- 詳細行の真ん中のセル(InvoiceDate)を選択し、[プロパティ]ウィンドウでFormatプロパティを「d」(Decimalを選択)に設定します。
- 詳細行の右側のセル(Total)を選択し、[プロパティ]ウィンドウでLanguageプロパテイを「英語(米国)」に設定します。
- テーブルフッタの右のセルを選択し、[プロパティ]ウィンドウで各プロパティを次のように設定します。
プロパティ名 |
プロパティの値 |
Format |
c |
Language |
英語(米国) |
Value |
=Sum(Fields!Total.Value) |
レポートをActiveReports Serverにアップロードする
- デザイナの[保存]ボタン
をクリックします。
- 開かれる[名前を付けて保存]ダイアログで、フォルダ・ツリーからディレクトリを選択し、サーバー上のどの位置にレポートを保存するかを決定します。
-
[レポートの名前]フィールドに「請求書」と入力して[保存]ボタンをクリックします。

ActiveReports Server上のレポートをプレビューする
関連トピック